package collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 集合的遍历
 * Collection提供了一个方法:
 * Iterator iterator()
 * 该方法可以获取一个用于遍历当前集合元素的迭代器
 *
 * java.util.Iterator接口,迭代器
 * 迭代器遍历集合采取的方式为:问取删 其中删除元素不是必要操作
 * 所有集合实现类都提供了一个可以遍历自身元素的迭代器实现类.
 */
public class IteratorDemo {

    public static void main(String[] args) {
        Collection c = new ArrayList();
        c.add("one");
        c.add("#");
        c.add("two");
        c.add("#");
        c.add("three");
        c.add("#");
        c.add("four");
        c.add("#");
        c.add("five");

        System.out.println(c);
        //1获取遍历该集合的迭代器
        Iterator it = c.iterator();
        //2遍历规则:问一次取一次
        /*
            boolean hasNext()
            通过迭代器询问集合是否还有下一个元素可以遍历(第一调用就是判断是否有第一个
            元素,以此类推)

            E next()
            通过迭代器获取集合下一个元素
         */
//        while (it.hasNext()){
//            String str = (String)it.next();
//            System.out.println(str);
//        }
        while(it.hasNext()){
            String str = (String)it.next();
            System.out.println(str);
            if("#".equals(str)){
                /*
                    迭代器要求遍历的过程中不得通过集合的方法增删元素
                    否则会抛出异常:ConcurrentModificationException
                 */
//                c.remove(str);
                /*
                    迭代器的remove方法可以将通过next方法获取的元素从集合
                    中删除。
                 */
                it.remove();
            }
        }
        System.out.println(c);

    }
}
